home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Information / CSMP Digest / volume 1 / csmp-v1-147.txt < prev    next >
Text File  |  1992-12-31  |  37KB  |  1,069 lines

  1. C.S.M.P. Digest             Tue, 21 Jul 92       Volume 1 : Issue 147
  2.  
  3. Today's Topics:
  4.  
  5.     Offscreen pixMaps/GrafPorts/gWorlds
  6.     PICT file to PICT resource?
  7.     68040 Cache, 32-bit addressing, & Pascal...
  8.     Bug in PCloseSkt() ???
  9.     How to find the "blessed folder"?
  10.     Yucky "QuickTime Pict" thing in my dialog
  11.     to Null terminated [SUMMARY] and thanks
  12.     How does PrintMonitor do it?
  13.  
  14.  
  15.  
  16. The Comp.Sys.Mac.Programmer Digest is moderated by Michael A. Kelly.
  17.  
  18. The digest is a collection of article threads from the internet newsgroup
  19. comp.sys.mac.programmer.  It is designed for people who read c.s.m.p. semi-
  20. regularly and want an archive of the discussions.  If you don't know what a
  21. newsgroup is, you probably don't have access to it.  Ask your systems
  22. administrator(s) for details.  (This means you can't post questions to the
  23. digest.)
  24.  
  25. Each issue of the digest contains one or more sets of articles (called
  26. threads), with each set corresponding to a 'discussion' of a particular
  27. subject.  The articles are not edited; all articles included in this digest
  28. are in their original posted form (as received by our news server at
  29. cs.uoregon.edu).  Article threads are not added to the digest until the last
  30. article added to the thread is at least one month old (this is to ensure that
  31. the thread is dead before adding it to the digest).  Article threads that
  32. consist of only one message are generally not included in the digest.
  33.  
  34. The entire digest is available for anonymous ftp from ftp.cs.uoregon.edu
  35. [128.223.8.8] in the directory /pub/mac/csmp-digest.  The most recent issues
  36. are available from sumex-aim.stanford.edu [36.44.0.6] in the directory
  37. /info-mac/digest/csmp.  If you don't have ftp capability, the sumex archive
  38. has a mail server; send a message with the text '$MACarch help' (no quotes)
  39. to LISTSERV@ricevm1.rice.edu for more information.
  40.  
  41. The digest is also available via email.  Just send a note saying that you
  42. want to be on the digest mailing list to mkelly@cs.uoregon.edu, and you will
  43. automatically receive each new issue as it is created.  Sorry, back issues
  44. are not available through the mailing list.
  45.  
  46. Send administrative mail to mkelly@cs.uoregon.edu.
  47.  
  48.  
  49. -------------------------------------------------------
  50.  
  51. From: Bathsheba.Grossman@bbs.oit.unc.edu (Bathsheba Grossman)
  52. Subject: Offscreen pixMaps/GrafPorts/gWorlds
  53. Date: 17 Jun 92 05:51:43 GMT
  54. Organization: Extended Bulletin Board Service
  55.  
  56. Hello world.
  57. I'm perusing the Tech Notes for the first time, having been a macProg for 2
  58. years (at least, that's how long I've been taking money for it), and I just
  59. read  #120, Principia Off-Screen Graphics Environments and panicked.
  60.  
  61. Do I really have to allocate a new graphics device every time I want
  62. to draw in an offscreen bitmap?  Even if I'm only going to dump it to the
  63. screen in a few ticks?  IM VI 21.5 says not, but the note seems pretty hard-line
  64. about it.  So far I've been doing ok without a gDev or gWorld.
  65.  
  66. Do I care about the difference between indexed and direct color models? 
  67. If so, what do I have to do to remain compatible (at least, with the128K ROM
  68. under System 6.0.5 and up)?  I would also like to be able to run under the
  69. 8.24 video card, though I don't have one to test on.
  70.  
  71. Other questions on my mind: Is the 3K limit on CopyBits() still in force? 
  72. And, is there anything I can do to make it go faster, other than seeing
  73. that the offscreen port's width is a multiple of 4.
  74.  
  75. Thanks a lot - thousands (well, dozens, anyway) of users will appreciate it.
  76. I can be emailed, or if this is of any interest, I'll see it if posted.
  77.  
  78. - -Sheba
  79. sheba@mohlsun.physics.upenn.edu
  80. - --
  81.    The opinions expressed are not necessarily those of the University of
  82.      North Carolina at Chapel Hill, the Campus Office for Information
  83.         Technology, or the Experimental Bulletin Board Service.
  84.            internet:  bbs.oit.unc.edu or 152.2.22.80
  85.  
  86. +++++++++++++++++++++++++++
  87.  
  88. From: zobkiw@world.std.com (Joe Zobkiw)
  89. Date: 17 Jun 92 10:50:09 GMT
  90. Organization: The World Public Access UNIX, Brookline, MA
  91.  
  92. OK, don't worry!
  93.  
  94. You don't need a Graphics Device for a BitMap, only a PixMap. Even then,
  95. you don't _need_ it but it does make for a more elegant solution to dealing
  96. with color tables, etc. Unless, of course, you just use the GWorld calls,
  97. then it's all done for you! Now, if GWorlds only worked on non-color quickdraw
  98. machines, we would be _All Set_...Apple?
  99.  
  100. As far as CopyBits() 3K limit. That limitation was taken out the day after
  101. it was written about in whatever tech note it's in. ;) Well, not really,
  102. but I've CopyBit's a 13in 256 color display, probably a _little_ more than
  103. 3K wouldn't you say?
  104.  
  105.  
  106. - -- 
  107. - -- joe zobkiw                      Internet: zobkiw@world.std.com
  108. - --                                      AOL: AFL Zobkiw  
  109. - -- mac.synthesis.MIDI.THINK C.OOP
  110. - -- asm.comm.networks.cool tunes...
  111.  
  112. +++++++++++++++++++++++++++
  113.  
  114. From: k044477@hobbes.kzoo.edu (Jamie R. McCarthy)
  115. Organization: Kalamazoo College
  116. Date: Wed, 17 Jun 1992 14:54:08 GMT
  117.  
  118. Bathsheba.Grossman@bbs.oit.unc.edu (Bathsheba Grossman) writes:
  119. >I just
  120. >read  #120, Principia Off-Screen Graphics Environments and panicked.
  121. >
  122. >Do I really have to allocate a new graphics device every time I want
  123. >to draw in an offscreen bitmap?  Even if I'm only going to dump it to the
  124. >screen in a few ticks?
  125.  
  126. No.  Here's (part of) the scoop.  A GDevice keeps track of the "color
  127. environment" you're drawing into.  For example, when CopyBits needs to
  128. know what its destination PixMap's color table is, it ignores the
  129. pmTable field of the PixMap and uses the gdPMap field of the current
  130. GDevice instead.
  131.  
  132. A "color environment," near as I can figure, is (1) an indication of
  133. whether pixels are indexed or direct, (2) a pixel depth, (3) a color
  134. table, if necessary, and (4) an inverse table, if necessary.  A GDevice
  135. stores a color environment.
  136.  
  137. If your off-screen pixmaps will all be at the same pixel depth, then
  138. "color environment" equals "color table," for all practical purposes.
  139.  
  140. If your off-screen pixmaps will all be using the same color table, then
  141. they can share a color environment.
  142.  
  143. And, if your off-screen color table will always be the same as a
  144. screen's GDevice, then you can borrow its color environment for your
  145. off-screen drawing.  Just SetGDevice() to that screen before your calls,
  146. and be sure to set it back where you found it.  Note that you don't need
  147. to do this, and should _not_ do this, for on-screen drawing, because
  148. QuickDraw will always take care of on-screen color environments for you.
  149.  
  150. >Do I care about the difference between indexed and direct color models? 
  151.  
  152. I don't know;  do you?  :-)  If you always use CopyBits to put an image
  153. on the screen, then you don't have to worry about whether the _screen_
  154. is indexed or direct.  Is that what you were asking?
  155.  
  156. >Other questions on my mind: Is the 3K limit on CopyBits() still in force? 
  157.  
  158. Nope.  CopyBits will allocate heap space, if it has to, to do the copy.
  159.  
  160. >And, is there anything I can do to make it go faster, other than seeing
  161. >that the offscreen port's width is a multiple of 4.
  162.  
  163. There's lots and lots you can do.  Longword-alignment is just the
  164. beginning.  See TN277, "Of Time and Space and _CopyBits."
  165.  
  166. My sources are IM, TN120, and "Graphical Truffles:  Multiple Screens
  167. Revealed," an article in the May 1992 develop which, at three pages, has
  168. the highest usefulness-per-word ratio of anything I've read.  If I got
  169. anything wrong, _please_ correct me!
  170. - -- 
  171.  Jamie McCarthy     Internet: k044477@kzoo.edu     AppleLink: j.mccarthy
  172.  In Pascal, don't nest procedures to be passed by procedure pointer.
  173.  
  174. +++++++++++++++++++++++++++
  175.  
  176. From: chrish@strl.labs.tek.com (Chris Hubbard)
  177. Date: 17 Jun 92 22:54:32 GMT
  178. Organization: STRL, Tektronix Inc, USA
  179.  
  180. Hello.
  181.  
  182. This is some very nice discussion.  But, My question is slightly different.
  183.  
  184. I don't need the overhead of Color QuickDraw.  I want to simulate a 
  185. Scope display, and I want to use the 8 colors provided in Classic QuickDraw:
  186. Black, White, Red, Green, Blue, Cyan, Yellow, and Magenta.  That is all 
  187. I need.  Can GWorlds use BitMaps and GrafPorts instead of PixMaps and
  188. CGrafPorts?
  189.  
  190. Chris
  191. - -- 
  192. Chris Hubbard                chrish@crl.labs.tek.com
  193. Tektronix, Inc                topher@maxwell.physics.purdue.edu
  194. Computer Research Lab        (503) 627-2660
  195. Beaverton, OR 97077
  196.  
  197. +++++++++++++++++++++++++++
  198.  
  199. From: zobkiw@world.std.com (Joe Zobkiw)
  200. Organization: The World Public Access UNIX, Brookline, MA
  201. Date: Thu, 18 Jun 1992 00:37:11 GMT
  202.  
  203. In article <4491@crl.LABS.TEK.COM> chrish@strl.labs.tek.com writes:
  204.  
  205. >Can GWorlds use BitMaps and GrafPorts instead of PixMaps and
  206. >CGrafPorts?
  207. >
  208.  
  209. GWorlds use PixMaps. Period. You can just use a BitMap if you are going to
  210. only use the "classic" colors. It will work fine.
  211.  
  212.  
  213.  
  214. - -- 
  215. - -- joe zobkiw                      Internet: zobkiw@world.std.com
  216. - --                                      AOL: AFL Zobkiw  
  217. - -- mac.synthesis.MIDI.THINK C.OOP
  218. - -- asm.comm.networks.cool tunes...
  219.  
  220. +++++++++++++++++++++++++++
  221.  
  222. From: smoke@well.sf.ca.us (Nicholas Jackiw)
  223. Organization: Whole Earth 'Lectronic Link
  224. Date: Thu, 18 Jun 1992 16:16:26 GMT
  225.  
  226. In article <Bq0n20.CGo@world.std.com> zobkiw@world.std.com (Joe Zobkiw) writes:
  227. >In article <4491@crl.LABS.TEK.COM> chrish@strl.labs.tek.com writes:
  228. >
  229. >>Can GWorlds use BitMaps and GrafPorts instead of PixMaps and
  230. >>CGrafPorts?
  231. >
  232. >GWorlds use PixMaps. Period. You can just use a BitMap if you are going to
  233. >only use the "classic" colors. It will work fine.
  234.  
  235. I disagree.  "Bitmap" implies one bit per pixel, and hence no room for
  236. color information (classic or CQD).  When you use a classic QD GrafPort
  237. that sits on a screen with depth>1, the grafPort's portBits points to
  238. the screen, which _Color_ Quickdraw recognizes as a pixmap.  Here, drawing
  239. with classic colors works, precisely because the buffer (the screen pixmap)
  240. has sufficient depth to store color information, even though to the 
  241. program's eye, it appears as a bitmap.  When you draw to an offscreen
  242. bitmap, however, there is no buffer of greater depth, and your one-bit/
  243. pixel limitation will guarantee that your image is only two color.  (The
  244. two colors, zero and one, are determined at the moment you CopyBits to
  245. a deep screen by the present ForeColor and BackColor.)
  246.  
  247. If you intend any offscreen manipulation of color, use Color Quickdraw.
  248.  
  249.  
  250. - -- 
  251.                               --- * ---
  252. Nick Jackiw                  Smoke@well.sf.ca.us   | Jackiw@cs.swarthmore.edu
  253. Key Curriculum Press, Inc.   Applelink:KEY.EDUSOFT | (510) 548-2304
  254.                               --- * ---
  255.  
  256. +++++++++++++++++++++++++++
  257.  
  258. From: jmatthews@desire.wright.edu
  259. Date: 18 Jun 92 00:54:52 EST
  260. Organization: Wright State University 
  261.  
  262. In article <BpzKrL.7BF@world.std.com>, zobkiw@world.std.com (Joe Zobkiw) writes:
  263. > Unless, of course, you just use the GWorld calls, then
  264. > it's all done for you! Now, if GWorlds only worked on non-color quickdraw
  265. > machines, we would be _All Set_...Apple?
  266.  
  267. Having inquired about this before, I have to say that the GWorld stuff
  268. works well under System 7 on non-CQD machines provided you call
  269. GetGWorldPixMap instead of accessing the portPixMap directly.
  270.  
  271. What _doesn't_ work is GetForeColor. On a 4 MB Mac+, System 7.0
  272. (tuneup 1.1.1), MacsBug 6.2.2, THINK Pascal 4.0.1, the following code
  273. is illustrative:
  274.  
  275. program GFCTest;
  276.   var
  277.     c: RGBColor;
  278.     i, j, k, l: Integer;
  279. begin
  280.   i := 1;
  281.   j := 2;
  282.   k := 3;
  283.   l := 4;
  284.   WriteLn(i, j, k, l);
  285.   GetForeColor(c);
  286.   WriteLn(i, j, k, l)
  287. end.
  288.  
  289. It produces two lines of output
  290.  
  291.      1     2     3     4
  292. - -32768  4528     6     4
  293.  
  294. Ooops:-) The variable c is filled in with the correct forecolor
  295. (0,0,0), but the following six bytes get stepped on. This is now known
  296. as bug #100928.
  297.  
  298. o----------------------------------------------------------------------------o
  299. | John B. Matthews, jmatthews@desire.wright.edu, disclaimer:= myViews <> WSU |
  300. | "I'm a commensal .sig virus, indistinguishable from an ordinary organelle."|
  301. o----------------------------------------------------------------------------o
  302.  
  303. +++++++++++++++++++++++++++
  304.  
  305. From: Josh.Adams@bbs.oit.unc.edu (Josh Adams)
  306. Date: 19 Jun 92 17:11:51 GMT
  307. Organization: Extended Bulletin Board Service
  308.  
  309. I think that with old Quickdraw, bitMaps etc, you can do the basic 8 colors
  310.  
  311. You shouldn't need to have to use CQD to get those 8. I used old QD and
  312. got those 8, but I wasn't using offscreen bitmaps, if that has impact.
  313.  
  314. Josh
  315.  
  316.  
  317. - --
  318.    The opinions expressed are not necessarily those of the University of
  319.      North Carolina at Chapel Hill, the Campus Office for Information
  320.         Technology, or the Experimental Bulletin Board Service.
  321.            internet:  bbs.oit.unc.edu or 152.2.22.80
  322.  
  323. ---------------------------
  324.  
  325. From: ward1@husc8.harvard.edu (Lester Ward)
  326. Subject: PICT file to PICT resource?
  327. Date: 17 Jun 92 18:36:32 GMT
  328.  
  329. How different are PICT files from PICT resources?  I'm trying to grab a PICT
  330. file, and dump a PICT resource copy of it into a hyperCard stack.  Any
  331. suggestions?  I really don't know exactly where to begin.
  332.  
  333. Thanks in advance.
  334.  
  335. Les
  336.  
  337. +++++++++++++++++++++++++++
  338.  
  339. From: zobkiw@world.std.com (Joe Zobkiw)
  340. Organization: The World Public Access UNIX, Brookline, MA
  341. Date: Wed, 17 Jun 1992 20:15:06 GMT
  342.  
  343. In article <ward1.708806192@husc8> ward1@husc8.harvard.edu (Lester Ward) writes:
  344. >How different are PICT files from PICT resources?  I'm trying to grab a PICT
  345. >file, and dump a PICT resource copy of it into a hyperCard stack.  Any
  346. >suggestions?  I really don't know exactly where to begin.
  347. >
  348.  
  349. The _only_ difference between a PICT file and a PICT resource is that the
  350.  _file_ has a 512 byte header attached that can be used for whatever the
  351. application that created it would like to use it for (ie: comments, version
  352. information, copyright information, etc.)
  353.  
  354. Open the PICT file, read it in (starting after the 512 byte header) then
  355. you can call AddResource on the data you have left (the PICT itself).
  356.  
  357.  
  358.  
  359. - -- 
  360. - -- joe zobkiw                      Internet: zobkiw@world.std.com
  361. - --                                      AOL: AFL Zobkiw  
  362. - -- mac.synthesis.MIDI.THINK C.OOP
  363. - -- asm.comm.networks.cool tunes...
  364.  
  365. +++++++++++++++++++++++++++
  366.  
  367. From: Steve Kohlmeyer
  368. Date: 17 Jun 92 21:27:01 GMT
  369. Organization: University of Minnesota
  370.  
  371. In article <ward1.708806192@husc8> ward1@husc8.harvard.edu (Lester Ward)
  372. writes:
  373. >How different are PICT files from PICT resources?  I'm trying to grab a PICT
  374. >file, and dump a PICT resource copy of it into a hyperCard stack.  Any
  375. >suggestions?  I really don't know exactly where to begin.
  376. >
  377. >Thanks in advance.
  378. >
  379. >Les
  380. >
  381. If you only have a couple of images to move you can do the following:
  382.     1)  use a graphics program to load the PICT files and 
  383.         export them to PICT rsrc.
  384.     2) use ResEdit to copy the PICT rsrc into your HyperCard stack.
  385.  
  386. Steve K.
  387.  
  388. +++++++++++++++++++++++++++
  389.  
  390. From: Eric.J.Baumgartner@dartmouth.edu (Eric J. Baumgartner)
  391. Date: 18 Jun 92 14:09:27 GMT
  392. Organization: Dartmouth College, Hanover, NH
  393.  
  394. In article <ward1.708806192@husc8>
  395. ward1@husc8.harvard.edu (Lester Ward) writes:
  396.  
  397. > How different are PICT files from PICT resources?  I'm trying to grab a PICT
  398. > file, and dump a PICT resource copy of it into a hyperCard stack.  Any
  399. > suggestions?  I really don't know exactly where to begin.
  400.  
  401. Dartmouth XCMDs has an XCMD called PICTFiletoRes that does this. I
  402. think it's available at sumex.
  403.  
  404. Eric Baumgartner                   *  ebaum@dartmouth.edu
  405. Interactive Media Lab              *  - When in danger or in doubt,
  406. Dartmouth Medical School           *      run in circles, scream and
  407. shout.
  408.  
  409. +++++++++++++++++++++++++++
  410.  
  411. From: ross@bnr.ca (Ross Brown)
  412. Organization: Bell-Northern Research
  413. Date: Thu, 18 Jun 92 13:50:32 GMT
  414.  
  415. In article <ward1.708806192@husc8> ward1@husc8.harvard.edu (Lester Ward)
  416. writes:
  417. >How different are PICT files from PICT resources?  I'm trying to grab a PICT
  418. >file, and dump a PICT resource copy of it into a hyperCard stack.  Any
  419. >suggestions?  I really don't know exactly where to begin.
  420.  
  421. Here's a simple MPW script called "DerezPict" which does exactly what you want.
  422.  I forget where I picked this up.  I hope the special Mac characters survive
  423. the trip through your news server.  If not, there's a couple of "option-d"s on
  424. line 19, and a "section mark" (option-6) on line 24.
  425.  
  426. - ------------ cut here ------------
  427.  
  428. #  DerezPict
  429. #  Copyright Apple Computer, Inc. 1987,1988
  430. #
  431. #  This script reads a PICT file (where the pict
  432. #  info is stored after the 512th byte in the
  433. #  data fork, and derez'es it into a pict resource,
  434. #  writing to standard output.
  435. #
  436. #  Note: this script doesn't handle any errors
  437. #        that might unexpectantly occur
  438. #
  439. #  Tom Taylor
  440. #  Tuesday, December 1, 1987 1:12:02 PM
  441.  
  442. if {#} != 1
  443.     echo syntax is: {0} pictFileName
  444.     exit 1
  445. end
  446. echo "read 'PICT' (1)  "{1} ";" | rez    # read the pict file's data fork and
  447.                                         # save it as a PICT resource in rez.out
  448. derez rez.out > DerezPict.tmp            # turn the PICT resource into a hex dump
  449. target DerezPict.tmp                    # open the temporary hex dump file
  450. find 2                                    # move to the first line of the hex dump
  451. clear  :!31                                # clear the 512 header bytes
  452. rez DerezPict.tmp                        # recompile the PICT resource
  453. close -n DerezPict.tmp                    # toss the temporary hex dump file
  454. derez rez.out pict.r                    # finally derez the PICT using the
  455.                                         # template found in pict.r
  456. delete DerezPict.tmp rez.out            # throw away our temporary files
  457.  
  458. - ------------ cut here ------------
  459.  
  460. W. Ross Brown                 | from Brown's Dictionary of Psychic Kinematics:
  461. Advisor, Telemanagement Svcs. |                          ex-hil'a-ra'tion (n.)
  462. Bell-Northern Research Ltd.   |                The rate of change of felicity.
  463. Ottawa, Ontario, Canada       | ----------------------------------------------
  464. ross@bnr.ca                   |      Any opinion expressed is mine, not BNR's.
  465.  
  466.  
  467. +++++++++++++++++++++++++++
  468.  
  469. From: michaelp@calvin.usc.edu (Michael Peterson)
  470. Date: 19 Jun 92 17:32:29 GMT
  471. Organization: University of Southern California, Los Angeles, CA
  472.  
  473.  
  474. The file and resource are almost excatly the same. Start reading from the pict
  475. file at position 512 and create a new resource from the handle from the file.
  476.  
  477. If you need more help I can send you the source for an XCMD next week.
  478.  
  479.  
  480.                     Michael L. Peterson
  481.                     michaelp@calvin.use.edu
  482.                     USC - UCS - CST
  483.  
  484. ---------------------------
  485.  
  486. From: rsherman@mthvax.cs.miami.edu (Roby Sherman)
  487. Subject: 68040 Cache, 32-bit addressing, & Pascal...
  488. Date: 17 Jun 1992 20:06:06 -0400
  489. Organization: The Tao of Programming
  490.  
  491. Hi. A couple of questions / requests 
  492.  
  493. 1> I want to declare a pascal procedure that would enable and disable
  494. the 68040 cache. Could someone provide the inline values of the op codes
  495. to enabale and disable the cahce?
  496.  
  497. 2> When you enable or disable the 32-bit addressing in the Memory
  498. Control-Panel, what is being modified? A resource in the system? Boot
  499. Blocks? PRAM??? How can *I* modify this setting without using the memory
  500. CP?
  501.  
  502.  
  503. Please leave e-mail with code / responses / etc. and I will post a
  504. summary.
  505.  
  506.  
  507.  
  508.             thanks in advance...
  509.  
  510.  
  511.                 --Roby 
  512. - -- 
  513. rsherman@mthvax.cs.miami.edu                    Roby Sherman
  514.  
  515. +++++++++++++++++++++++++++
  516.  
  517. From: ldo@waikato.ac.nz (Lawrence D'Oliveiro, Waikato University)
  518. Date: 18 Jun 92 17:24:14 +1200
  519. Organization: University of Waikato, Hamilton, New Zealand
  520.  
  521. In article <11ok1eINNk5f@mthvax.cs.miami.edu>, rsherman@mthvax.cs.miami.edu (Roby Sherman) writes:
  522. > 1> I want to declare a pascal procedure that would enable and disable
  523. > the 68040 cache. Could someone provide the inline values of the op codes
  524. > to enabale and disable the cahce?
  525.  
  526.     Procedure DisableInstructionCache;
  527.  
  528.         CODE
  529.             $7000,            (* moveq.l #0, d0 *)
  530.         $2040,            (* move.l d0, a0 *)
  531.         $A198;            (* _HWPriv *)
  532.  
  533.     Procedure EnableInstructionCache;
  534.  
  535.         Inline
  536.         $7000,            (* moveq.l #0, d0 *)
  537.         $307C, $0001,        (* move.w #1, a0 *)
  538.         $A198;            (* _HWPriv *)
  539.  
  540.     Procedure DisableDataCache;
  541.  
  542.         Inline
  543.         $7002,            (* moveq.l #2, d0 *)
  544.         $91C8,            (* sub.l a0, a0 *)
  545.         $A198;            (* _HWPriv *)
  546.  
  547.     Procedure EnableDataCache;
  548.  
  549.         Inline
  550.             $7002,            (* moveq.l #2, d0 *)
  551.             $2040,            (* move.l d0, a0 *)
  552.             $A198;            (* _HWPriv *)
  553.  
  554. > 2> When you enable or disable the 32-bit addressing in the Memory
  555. > Control-Panel, what is being modified? A resource in the system? Boot
  556. > Blocks? PRAM??? How can *I* modify this setting without using the memory
  557. > CP?
  558.  
  559. It's a bit in parameter RAM. You can track it down by setting an A-trap
  560. breakpoint on _WriteXPram and changing the setting in the Memory control
  561. panel.
  562.  
  563. Lawrence D'Oliveiro                       fone: +64-7-856-2889
  564. Computer Services Dept                     fax: +64-7-838-4066
  565. University of Waikato            electric mail: ldo@waikato.ac.nz
  566. Hamilton, New Zealand    37^ 47' 26" S, 175^ 19' 7" E, GMT+12:00
  567. New sci-fi movie about a failed attempt to surgically modify a human being
  568. to run the first 2-minute mile: "2:00.01 -- a pace oddity."
  569.  
  570. ---------------------------
  571.  
  572. From: johngr@cs.kun.nl (John Graat)
  573. Subject: Bug in PCloseSkt() ???
  574. Date: 18 Jun 92 14:49:47 GMT
  575. Organization: University of Nijmegen, The Netherlands
  576.  
  577.  
  578. Newsgroups: comp.sys.mac.programmer
  579. Subject: Bug in POpenSkt() ???
  580. Summary: Does the preferred interface function POpenSkt() contain a bug?
  581. Keywords: bug appletalk ddp
  582. Organization: University of Nijmegen, The Netherlands
  583.  
  584. Hello,
  585.  
  586. In the little program below a socket is opened and closed, using either
  587. the old or the preferred interface. The problem is that every time the
  588. preferred interface is used to open a socket, the closing of the socket
  589. fails. First, you would expect that PCloseSkt causes the problem, but it
  590. seems not to, since using the old interface to close it goes wrong too.
  591.  
  592. Any idea of what is going on here?
  593. btw: I use MPW 3.0
  594.  
  595. /* start of program */
  596.  
  597. #include <AppleTalk.h>
  598. #include <Types.h>
  599. #include <Stdio.h>
  600. #include <Stdlib.h>
  601. #include <String.h>
  602.  
  603. #define SYNC    false
  604.  
  605. void main( int argc, char *argv[] )
  606. {
  607.    MPPParamBlock thePB;
  608.    OSErr theError;
  609.    unsigned short theSocket;
  610.    short aSocket;
  611.    
  612.    
  613.    //
  614.    // open appletalk
  615.    //
  616.    if ( theError = MPPOpen(), theError != noErr )
  617.    {
  618.       fprintf( stderr, "Error %d occured during MPPOpen.\n", theError );
  619.       exit( 1 );
  620.    }
  621.    else fprintf( stderr, "AppleTalk opened.\n" );
  622.  
  623.  
  624.    //   
  625.    // open socket
  626.    //
  627.    if ( strcmp( argv[1], "old" ) == 0 )
  628.    {
  629.       aSocket = 0;
  630.       theError = DDPOpenSocket( &aSocket, NULL );
  631.       theSocket = (unsigned short) (aSocket & 0xFF);
  632.    }
  633.    else if ( strcmp( argv[1], "new" ) == 0 )
  634.    {
  635.       thePB.DDPsocket   = 0;
  636.       thePB.DDPlistener = NULL;
  637.       theError = POpenSkt( &thePB, SYNC );
  638.       theSocket = (unsigned short) (((char) thePB.DDPsocket) & 0xFF);
  639.    }
  640.    else
  641.    {
  642.       fprintf( stderr, "usage: %s old|new old|new.\n", argv[0] );
  643.       exit( 1 );
  644.    }
  645.    
  646.    if ( theError != noErr )
  647.    {
  648.       fprintf( stderr, "Error %d occured while opening socket.\n", theError );
  649.       exit( 1 );
  650.    }
  651.    else fprintf( stderr, "Socket %u opened.\n", (unsigned) theSocket );
  652.    
  653.    
  654.    //   
  655.    // close socket
  656.    //
  657.    if ( strcmp( argv[2], "old" ) == 0 )
  658.    {
  659.       aSocket = (short) theSocket & 0xFF;
  660.       theError = DDPCloseSocket( aSocket );
  661.    }
  662.    else if ( strcmp( argv[2], "new" ) == 0 )
  663.    {
  664.       thePB.DDPsocket = (char) (theSocket & 0xFF);
  665.       theError = PCloseSkt( &thePB, SYNC );
  666.    }
  667.    else
  668.    {
  669.       fprintf( stderr, "usage: %s old|new old|new.\n", argv[0] );
  670.       exit( 1 );
  671.    }
  672.    
  673.    if ( theError != noErr )
  674.    {
  675.       fprintf( stderr, "Error %d occured while closing socket.\n", theError );
  676.       exit( 1 );
  677.    }
  678.    else fprintf( stderr, "Socket closed.\n" );
  679.  
  680.  
  681.    //   
  682.    // exit
  683.    //
  684.    fprintf( stderr, "Done: %s %s %s.\n", argv[0], argv[1], argv[2] );
  685.    exit( 0 );
  686.    
  687. }// SocketTest //
  688.  
  689.  
  690. # test 1: using the old interface
  691. SocketTest old old
  692. AppleTalk opened.
  693. Socket 250 opened.
  694. Socket closed.
  695. Done: SocketTest old old.
  696.  
  697. # test 2: using the old interface to open the socket and the preferred
  698. # interface to close it
  699. SocketTest old new
  700. AppleTalk opened.
  701. Socket 250 opened.
  702. Socket closed.
  703. Done: SocketTest old new.
  704.  
  705. # test 3: using the preferred interface to open and the old one to close the
  706. # socket
  707. SocketTest new old
  708. AppleTalk opened.
  709. Socket 250 opened.
  710. Error -91 occured while closing socket.
  711.  
  712. # test 4: using the preferred interface to both open and close the
  713. # socket
  714. SocketTest new new
  715. AppleTalk opened.
  716. Socket 250 opened.
  717. Error -91 occured while closing socket.
  718.  
  719. Although test 3 shows that closing the socket produces an error, it is
  720. likely that the socket is closed anyway, since test 4 returns socket 250
  721. again.
  722. I don't get it.
  723.  
  724. Greetings,
  725.  
  726. John Graat.
  727. Faculty of Mathematics and Computer Science
  728. University of Nijmegen
  729. The Netherlands
  730.  
  731. +++++++++++++++++++++++++++
  732.  
  733. From: condyloma@apple.com (Kevin Stinson)
  734. Date: Thu, 18 Jun 1992 18:29:47 GMT
  735. Organization: Apple Computer, Inc.
  736.  
  737. In article <1992Jun18.144947.21454@sci.kun.nl>, johngr@cs.kun.nl (John Graat) writes:
  738. > Newsgroups: comp.sys.mac.programmer
  739. > Subject: Bug in POpenSkt() ???
  740. > Summary: Does the preferred interface function POpenSkt() contain a bug?
  741. > Keywords: bug appletalk ddp
  742. > Organization: University of Nijmegen, The Netherlands
  743. > Hello,
  744. > In the little program below a socket is opened and closed, using either
  745. > the old or the preferred interface. The problem is that every time the
  746. > preferred interface is used to open a socket, the closing of the socket
  747. > fails. First, you would expect that PCloseSkt causes the problem, but it
  748. > seems not to, since using the old interface to close it goes wrong too.
  749. > Any idea of what is going on here?
  750. > btw: I use MPW 3.0
  751. > [ Program deleted ]
  752. > Although test 3 shows that closing the socket produces an error, it is
  753. > likely that the socket is closed anyway, since test 4 returns socket 250
  754. > again.
  755. > I don't get it.
  756. > Greetings,
  757. > John Graat.
  758. > Faculty of Mathematics and Computer Science
  759. > University of Nijmegen
  760. > The Netherlands
  761.  
  762. Note that the close fails only if you had opened the socket with the preferred interface,
  763. not the old interface. The problem is that you are not providing a socket listener on
  764. the DDPOpen with the preferred interface.
  765.  
  766. On the current Mac implementation of AppleTalk, a socket is considered open only if it
  767. has a nonzero socket listener associated with it. Since you opened the socket with a
  768. null listener, the DDP close failed because DDP thinks that the socket was not really
  769. open.
  770.  
  771. The old interface provided a default socket listener (so DDPRead would work) so this is
  772. not a problem with the old interface.
  773.  
  774. So, you can:
  775.  
  776. Use the old interface to open the socket and then use the preferred interface for the
  777. other operations.
  778.  
  779.  or 
  780.  
  781. Use the preferred interface to open the socket but provide a socket listener (see IM vol
  782. 2 for info on how to write a socket listener). If you don't care about receiving any
  783. packets, you can use a "dump the packet" listener:
  784.  
  785.     SocketListener:
  786.           MOVEQ    #0, D3                ; no buffer to hold the data
  787.                                         JMP            2(A4)                 ; call ReadRest to dump the data
  788.  
  789. Kevin Stinson
  790. AppleShare Engineer
  791. Apple Computer, Inc.
  792.  
  793.     - I said it, not Apple!
  794.  
  795. ---------------------------
  796.  
  797. From: johngr@cs.kun.nl (John Graat)
  798. Subject: How to find the "blessed folder"?
  799. Date: 18 Jun 92 15:24:12 GMT
  800. Organization: University of Nijmegen, The Netherlands
  801.  
  802. Hello,
  803.  
  804. Can someone tell me how I can find the "blessed folder"? I known that
  805. Technical Note 67 refers to Inside Macintosh V6, but the FindFolder
  806. function they are referring to, is only available under system 7, but
  807. I'm using system 6.0.7.
  808. I need to know this because I want to put a preference file in this
  809. folder.
  810.  
  811. Thanks in advance,
  812.  
  813. John Graat
  814. Faculty of Mathematics and Computer Science
  815. University of Nijmegen
  816. The Netherlands
  817.  
  818. +++++++++++++++++++++++++++
  819.  
  820. From: k044477@hobbes.kzoo.edu (Jamie R. McCarthy)
  821. Date: 18 Jun 92 16:55:47 GMT
  822. Organization: Kalamazoo College
  823.  
  824. johngr@cs.kun.nl (John Graat) writes:
  825. >
  826. >Can someone tell me how I can find the "blessed folder"? I known that
  827. >Technical Note 67 refers to Inside Macintosh V6, but the FindFolder
  828. >function they are referring to, is only available under system 7, but
  829. >I'm using system 6.0.7.
  830.  
  831. I'm told by a reliable source that Think C (and, therefore, probably
  832. Think Pascal as well) provides glue for FindFolder that works under
  833. system 6.  I don't know if MPW does this.  I also don't know if the glue
  834. respects the "create folder if it doesn't exist" bit, but I doubt it.
  835.  
  836. In any event, the easiest way is to use SysEnvirons, documented in the
  837. opening pages of IM V.
  838.  
  839. >I need to know this because I want to put a preference file in this
  840. >folder.
  841.  
  842. If you'd prefer, under system 6, to look for and/or create a folder
  843. called "Preferences," or whatever the Dutch equivalent is, you can find
  844. sample code in my CPrefsFile's "findFolder" method.  It's available from
  845. ftp.brown.edu in /pub/tcl/classes.
  846. - -- 
  847.  Jamie McCarthy     Internet: k044477@kzoo.edu     AppleLink: j.mccarthy
  848.  Set the cursor on suspend and resume events.
  849.  
  850. +++++++++++++++++++++++++++
  851.  
  852. From: zben@ni.umd.edu (Charles B. Cranston)
  853. Organization: UM Home for the Terminally Analytical
  854. Date: Thu, 18 Jun 1992 18:29:30 GMT
  855.  
  856. In article <1992Jun18.152412.21759@sci.kun.nl>, johngr@cs.kun.nl (John Graat) writes:
  857.  
  858. > Can someone tell me how I can find the "blessed folder"? I known that
  859. > Technical Note 67 refers to Inside Macintosh V6, but the FindFolder
  860. > function they are referring to, is only available under system 7, but
  861. > I'm using system 6.0.7.
  862.  
  863. I'm very careful that when they REMOVE information from a technical
  864. note I stash the old version.  The old versions of tn67 tell you how
  865. to do it manually (i.e. for system 6).
  866.  
  867. But this one is easy!  They tell you how to SET the blessed folder,
  868. just stuff the appropriate directory ID into ioVFnderInfo[1] and
  869. write it back with the PBGetVInfo/PBSetVInfo suite.  Well, that's
  870. where it lives, and the old version of the tech note simply suggests
  871. that you get it from the ioVFnderInfo returned by a PBGetVInfo on
  872. the startup volume.
  873.  
  874. What they don't talk about is, for multiple volume systems, how to
  875. figure out which V to get Info of, especially in the case that the
  876. user has run the Set Startup Device control panel and changed the
  877. startup volume but has not yet rebooted.
  878.  
  879. I'd be inclined to maybe do a GetFCBInfo on the system file's
  880. resource file number and look at ioFCBParID, or else use the one
  881. in the Environs record as Jamie suggests...
  882.  
  883.  
  884. +++++++++++++++++++++++++++
  885.  
  886. From: grobbins@Apple.COM (Grobbins)
  887. Date: 19 Jun 92 07:51:14 GMT
  888. Organization: Apple DTS
  889.  
  890. In article <1992Jun18.182930.27388@ni.umd.edu> zben@ni.umd.edu (Charles B. Cranston) writes:
  891. >I'm very careful that when they REMOVE information from a technical
  892. >note I stash the old version.  The old versions of tn67 tell you how
  893. >to do it manually (i.e. for system 6).
  894.  
  895. Oh, c'mon.  If a note has been revised, it's for a good reason.
  896. Following outdated advice is a bad idea.  We're not trying to
  897. pretend that System 6 doesn't exist.
  898.  
  899. If you're using MPW or Think C or Pascal, call FindFolder.  As Jamie 
  900. mentioned, glue is provided that makes it work under System 6 as
  901. well as under System 7.  Unless you explicitly disable or bypass
  902. the compiler glue, that's all you need to do; no call to Gestalt
  903. is necessary to see if FindFolder is present.
  904.  
  905. If you _have_ disabled the glue, and you wish to find the system
  906. folder under System 6, the simplest solution is to get the WDRefNum
  907. returned by SysEnvirons and convert it to a proper vRefNum/dirID pair
  908. with GetWDInfo.
  909.  
  910. Incidentally, the FindFolder glue will return the System folder's dirID
  911. when asked for the Preferences folder under System 6.  Go ahead and
  912. store your preferences in whatever directory FindFolder suggests.
  913.  
  914. Grobbins        grobbins@apple.com
  915.  
  916.  
  917. ---------------------------
  918.  
  919. From: ccmlh@buitc.bu.edu (Mark Hayes)
  920. Subject: Yucky "QuickTime Pict" thing in my dialog
  921. Date: 19 Jun 92 14:44:36 GMT
  922. Organization: Boston University, Boston, MA, USA
  923.  
  924. My "about this program..." dialog contains a nice little PICT which,
  925. unfortunately, only displays when I run with QuickTime. When I run
  926. without it, instead of my cool picture I get an ugly B&W thing
  927. that says "QuickTime Pict" in its place. I certainly didn't
  928. deliberately try to take advantage of any QuickTimeyness here,
  929. so can anyone tell me what's going on?
  930.  
  931. +++++++++++++++++++++++++++
  932.  
  933. From: fgiraffe@well.sf.ca.us (Frank Giraffe)
  934. Organization: Whole Earth 'Lectronic Link
  935. Date: Fri, 19 Jun 1992 16:07:19 GMT
  936.  
  937.  
  938. Sounds like the PICT was originally made with Quicktime compression turned
  939. on. Where did you get the PICT from?
  940. - -Frank
  941. - -- 
  942. >Frank Giraffe- fgiraffe@well.sf.ca.us - {apple,pacbell,ucbvax}!well!fgiraffe
  943. >As the noose of narco-militarism tightens 'round our necks, we worry about
  944. >  burning flags and pee in jars at work to keep our jobs.  -- Jello Biafra
  945.  
  946. +++++++++++++++++++++++++++
  947.  
  948. From: ccmlh@buitc.bu.edu (Mark Hayes)
  949. Date: 19 Jun 92 18:46:27 GMT
  950. Organization: Boston University, Boston, MA, USA
  951.  
  952. In article <1992Jun19.160719.11565@well.sf.ca.us> fgiraffe@well.sf.ca.us (Frank Giraffe) writes:
  953. >Sounds like the PICT was originally made with Quicktime compression turned
  954. >on. Where did you get the PICT from?
  955.  
  956. The PICT resource was created by opening a PICT data file with
  957. GifConverter, selecting the entire image, doing a "copy",
  958. then pasting the contents of the clipboard into a resource file.
  959. QuickTime was installed at the time. So apparently the system
  960. (or could it be GifConverter?) handles such cut-and-paste
  961. operations differently when QT is present.
  962.  
  963. (Sorry I didn't mention this in my original posting. For those who
  964. missed it, doing the above gave me a PICT resource that wouldn't
  965. display without QuickTime installed, giving an ugly "QuickTime PICT"
  966. picture in its place.)
  967.  
  968. ---------------------------
  969.  
  970. Subject: to Null terminated [SUMMARY] and thanks
  971. From: skinner@oread.cc.ukans.edu
  972. Date: 16 Jun 92 23:06:28 CST
  973. Organization: University of Kansas Academic Computing Serces
  974.  
  975.  
  976. Thanks for all who sent info (over 10 people).  Combining several
  977. peoples suggestions I came up with the following:
  978.  
  979. procedure PascalToZero (var s: Str255; var length: longInt);
  980.   var
  981.    s1: Str255;
  982.  begin
  983.   s1 := s;
  984.   length := integer(s1[0]);
  985.   BlockMove(@s1[1], @s, length);
  986.   s[length] := Chr(0);
  987.  end;
  988.  
  989. The length variable is so that I can convert the string back more easily.
  990. It is crazy I convert the Pascal strings to C strings and then the first
  991. thing the XCMD does is call me back to reconvert them to Pascal strings.
  992. Now that I know the order that the callbacks come in I'm not sure but I
  993. could send empty strings and then send the correct Pascal strings in the
  994. callback.  I still don't have the XCMD figured out exactly (I can call
  995. one of a pair that I don't need but the one that I need I can't call correctly
  996. yet.
  997.  
  998. Thanks to all who responded though.  i appreciate you help.
  999.  
  1000.  
  1001. ---------------------------
  1002.  
  1003. From: mwalker@wc.novell.com (Mel Walker)
  1004. Subject: How does PrintMonitor do it?
  1005. Date: 17 Jun 92 17:14:02 GMT
  1006. Organization: Novell, Inc. - Walnut Creek
  1007.  
  1008. I was wondering how PrintMonitor knows when I have spooled a job, so that it
  1009. can start up? I assume that the Finder launches it. I was wondering if I
  1010. could write a program that could get launched like PrintMonitor does. Is
  1011. there a general mechanism that exists for this? I'm specifically thinking
  1012. of System 7, but how to do it under System 6 would also be interesting.
  1013. - --
  1014. + Mel Walker
  1015. + mwalker@optics.wc.novell.com
  1016. + mwalker.PRV_QM_ENG@wc_smtp_knet.wc.novell.com
  1017. + Macintosh Testing Team, Novell 
  1018.  
  1019. +++++++++++++++++++++++++++
  1020.  
  1021. From: resnick@cogsci.uiuc.edu (Pete Resnick)
  1022. Date: 17 Jun 92 18:30:48 GMT
  1023. Organization: University of Illinois at Urbana
  1024.  
  1025. mwalker@wc.novell.com (Mel Walker) writes:
  1026.  
  1027. >I was wondering how PrintMonitor knows when I have spooled a job, so that it
  1028. >can start up? I assume that the Finder launches it. I was wondering if I
  1029. >could write a program that could get launched like PrintMonitor does. Is
  1030. >there a general mechanism that exists for this? I'm specifically thinking
  1031. >of System 7, but how to do it under System 6 would also be interesting.
  1032.  
  1033. Under System 6, a small background-only application (Backgrounder)
  1034. constantly checked the spool folder and launched PrintMonitor when
  1035. necessary. Under System 7, there appears to be no separate application
  1036. running, so I take it that the OS itself takes care of it. In any
  1037. event, this is very easy to do under System 7 if you want to do it
  1038. yourself:
  1039.  
  1040. 1. Write your application.
  1041.  
  1042. 2. Write a small application that is background only, file type 'appe'.
  1043. It should be in the Extensions folder and it will make the call to
  1044. _LaunchApplication when some event occurs. (NB: The Desktop Manager
  1045. routines in System 7 are a good way to find the application to launch
  1046. it.)
  1047.  
  1048. pr
  1049. - --
  1050. Pete Resnick             (...so what is a mojo, and why would one be rising?)
  1051. Graduate assistant - Philosophy Department, Gregory Hall, UIUC
  1052. System manager - Cognitive Science Group, Beckman Institute, UIUC
  1053. Internet: resnick@cogsci.uiuc.edu
  1054.  
  1055. ---------------------------
  1056.  
  1057. End of C.S.M.P. Digest
  1058. **********************
  1059.